import store from '../store/index'

let tokenName = 'TOKEN'

function checkRole (roles) {
  let list = store.state.roles
  let index = -1
  for (let i = 0; i < list.length; i++) {
    let r = list[i]
    index = roles.findIndex(item => 'ROLE_' + item === r.name)
    if (index > -1) {
      return true
    }
  }
  return index > -1
}

// 表单组件列表
const formConfig = {
  // 输入框
  input: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 文本类型
    type: 'text',
    // 默认值
    default: '',
    // label描述
    label: 'input',
    // 组件属性
    attr: {
      // 占位文本
      placeholder: '',
      // 大小 - 选择
      size: 'default',
      // 是否清空
      clearable: false,
      // 是否只读
      readonly: false,
      // 最大长度
      maxlength: '-',
      // 文本域行数 需要判断type是否是textarea
      rows: 3,
      // 文本域自适应
      autosize: false
    },
    // 是否隐藏
    hide: false
  },
  // 数字输入框
  number: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: 0,
    // 是否隐藏
    hide: false,
    // label描述
    label: 'number',
    // 属性
    attr: {
      // 最大值
      max: 99999,
      // 最小值
      min: 0,
      // 按钮方向 true.左右 false.上下
      controlsOutside: false,
      // 步伐 每次点击的+-
      step: 1,
      // 大小 - 选择
      size: 'default',
      // 占位文本
      placeholder: '',
      // 是否只读
      readonly: false,
      // 小数点精度
      precision: 0,
      // 是否可以用户自定义输入
      editable: true
    }
  },
  // 下拉选择
  select: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: '',
    // 是否隐藏
    hide: false,
    // label描述
    label: 'select',
    // 组件属性
    attr: {
      // 大小 - 选择
      size: 'default',
      // 是否只读（禁用）
      disabled: false,
      // 是否多选
      multiple: false,
      // 是否可清空
      clearable: false,
      // 占位文本
      placeholder: '',
      // 支持输入搜索
      filterable: false,
      // 允许创建新选项
      allowCreate: false
    },
    // 选项列表
    option: []
  },
  selectOption: {
    value: '',
    label: ''
  },
  // 时间
  time: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: '',
    // 是否隐藏
    hide: false,
    // label描述
    label: 'time',
    // 类型 time.时间 timerange.时间范围
    type: 'time',
    // 组件属性
    attr: {
      // 大小 - 选择
      size: 'default',
      // 是否可清空
      clearable: false,
      // 占位文本
      placeholder: '',
      // 是否只读
      readonly: false,
      // 格式化
      format: 'HH:mm:ss',
      // 是否允许输入
      editable: true
    }
  },
  timeFormatSelect: [
    'HH:mm:ss',
    'HH时mm分ss秒',
    'HH小时mm分ss秒',
    'HH-mm-ss',
    'HH点mm分ss秒',
    'HH’mm’ss’'
  ],
  // 日期
  date: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: '',
    // 是否隐藏
    hide: false,
    // label描述
    label: 'date',
    // 类型 date.日期 daterange.范围日期
    type: 'date',
    // 组件属性
    attr: {
      // 格式化
      format: 'yyyy/MM/dd',
      // 大小 - 选择
      size: 'default',
      // 是否可清空
      clearable: false,
      // 占位文本
      placeholder: '',
      // 是否只读
      readonly: false,
      // 是否允许输入
      editable: true
    }
  },
  dateFormatSelect: [
    'yyyy/MM/dd',
    'yyyy-MM-dd',
    'yyyy年MM月dd日',
    'yyyy’MM’ss’'
  ],
  // 开关
  switch: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: 'false',
    // 是否隐藏
    hide: false,
    // label描述
    label: '开关',
    // 组件属性
    attr: {
      // 大小 - 选择
      size: 'default',
      // 是否禁用
      disabled: false,
      // trueVal
      trueVal: 'true',
      // falseVal
      falseVal: 'false',
      // trueColor
      trueColor: '',
      // falseColor
      falseColor: ''
    }
  },
  // 单选
  radio: {
  // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: '',
    // 是否隐藏
    hide: false,
    // label描述
    label: '单选',
    // 组件属性
    attr: {
      // 是否垂直布局 button无效
      vertical: false,
      // 大小 - 选择
      size: 'default',
      // 类型 button.按钮类型
      type: 'default',
      // 是否显示边框
      border: false
    },
    option: []
  },
  // 选项
  radioConfig: {
    lable: '',
    value: ''
  },
  // 多选
  checkbox: {
    // 绑定的字段（v-model）
    field: '',
    // 描述配置 用于表格
    tableLabel: '',
    // 默认值
    default: [],
    // 是否隐藏
    hide: false,
    // label描述
    label: '多选',
    // 组件属性
    attr: {
      // 大小 - 选择
      size: 'default',
      // 是否显示边框
      border: false
    },
    option: []
  },
  // 选项
  checkboxConfig: {
    lable: '',
    value: ''
  },
  // 按钮
  button: {
    // 按钮文字
    text: '按钮',
    // 是否隐藏
    hide: false,
    attr: {
      // 按钮大小
      size: 'default',
      // 按钮类型
      type: 'default',
      // 背景透明
      ghost: false,
      // 自适应
      long: false,
      // 禁用按钮
      disabled: false
    },
    click: 'console.log("点击事件")'
  },
  // 分割线
  divider: {
    // 分割线文字
    text: '分割线',
    // 是否隐藏
    hide: false,
    attr: {
      // 水平(horizontal)还是垂直(vertical)
      type: 'horizontal',
      // 文字位置
      orientation: 'center',
      // 是否虚线
      dashed: false,
      // 是否普通正文
      plain: false
    }
  },
  // 静态文字
  text: {
    // 文本内容
    content: '静态文字',
    // 是否隐藏
    hide: false,
    attr: {
      // 内边距
      padding: 10,
      // 是否加粗
      bold: false,
      // 文字大小
      fontSize: 16,
      // 文字方向
      align: 'left',
      // 自定义样式
      style: ''
    }
  },
  // 提示
  alert: {
    // 标题
    title: '提示',
    content: '内容',
    // 是否隐藏
    hide: false,
    attr: {
      // 类型
      type: 'info',
      // 可关闭
      closable: false,
      // 是否显示图标
      showIcon: false,
      // 关闭按钮文字
      closeText: ''
    }
  }
}

// 基础字段列表
const baseFields = [
  {
    val: '单行输入',
    type: 'text',
    configKey: 'input'
  },
  {
    val: '多行输入',
    type: 'textarea',
    configKey: 'input'
  },
  {
    val: '数字输入',
    configKey: 'number'
  },
  {
    val: '下拉框选择',
    configKey: 'select'
  },
  {
    val: '时间',
    type: 'time',
    configKey: 'time'
  },
  {
    val: '时间范围',
    type: 'timerange',
    configKey: 'time'
  },
  {
    val: '日期',
    type: 'date',
    configKey: 'date'
  },
  {
    val: '日期范围',
    type: 'daterange',
    configKey: 'date'
  },
  {
    val: '开关',
    configKey: 'switch'
  },
  {
    val: '单选',
    configKey: 'radio'
  },
  {
    val: '多选',
    configKey: 'checkbox'
  }
]

// 扩展字段列表
const moreFields = [
  {
    val: '按钮',
    configKey: 'button'
  },
  {
    val: '分割线',
    configKey: 'divider'
  },
  {
    val: '静态文字',
    configKey: 'text'
  },
  {
    val: '提示/警告',
    configKey: 'alert'
  }
]

export default {
  tokenName,
  checkRole,
  formConfig,
  baseFields,
  moreFields
}
